The present invention relates generally to a method, system, and apparatus for distributing and using portions of a computer-based application over a network.
Currently code associated with an application must be fully available on a computer system prior to execution of the application. It would be useful if code associated with an application could be selectively loaded on a computer system via a network for use during the time when the application is executing the particular code thereby reducing network latency associated with the transfer of code.
Presently, audio and video information may be streamed via a network. This is possible because audio and video information contain only data that is used sequentially. Applications by nature have both code and data that may be used in a non-sequential order. It would be useful if code and data could be streamed via a network in a non-sequential order for use by the application thereby enabling overlapping of access to and transmission of code and data with execution of other code and data.
Further, network-based distribution of an application by a computer system server (server) requires a network-based connection between the computer system client (client) and the server, such as a network file system (NFS) connection. It would be useful if an application could be made available via a network to clients that are not directly connected to servers such as computers connected over the network.
The present embodiment is a method, system, and apparatus for distributing and using portions of a computer-based application over a network.
The present invention novelly recognizes that often, limited portions of the code associated with an application are needed to execute the application during a particular use of the application. The present embodiment executes streamed chunks of code associated with an application on demand by binary emulation. Therefore the present invention enables execution of applications on network-based computer systems thereby enabling flexible distribution and use of executable code over a network. For example, the present embodiment enables servers to provide applications for binary emulated execution on clients that are not directly connected to the server, such as by an NFS connection.
The present embodiment is a software execution engine that cooperates with an operating system (O.S.) to execute code chunks associated with an application by binary emulation. The present embodiment streams the transmission of non-sequentially ordered code chunks required to execute the application, thereby enabling overlapping of access to and transmission of code chunks with execution of other code chunks. The present embodiment also reduces network latency effects of the past. The present embodiment may also speculatively stream the code chunks associated with the application to further reduce network latency effects associated with transmission of the code chunks. That is, the present embodiment novelly uses speculation to predict the code chunks associated with the application that will be required based on information such as patterns of prior use of the application.
The present invention improves the efficiency of application execution over the past by transferring minimal information between the server and the client thereby reducing the volume of information transferred over a network, such as the internet, during application execution. By means of example, the present invention enables more efficient management of pay-per-transaction application services, such as applications-on-tap.